#ifndef _WX_FONTPICKER_H_
#define _WX_FONTPICKER_H_

#include "wx/button.h"
#include "wx/cmndata.h"

//-----------------------------------------------------------------------------
// wxGenericFontButton: a button which brings up a wxColourDialog
//-----------------------------------------------------------------------------

#define wxFONTBTN_DEFAULT_STYLE \
  (wxFNTP_FONTDESC_AS_LABEL | wxFNTP_USEFONT_FOR_LABEL)

class wxGenericFontButton : public wxButton,
  public wxFontPickerWidgetBase {
  public:
    wxGenericFontButton() {}
    wxGenericFontButton( wxWindow *parent,
                         wxWindowID id,
                         const wxFont &initial = wxNullFont,
                         const wxPoint& pos = wxDefaultPosition,
                         const wxSize& size = wxDefaultSize,
                         long style = wxFONTBTN_DEFAULT_STYLE,
                         const wxValidator& validator = wxDefaultValidator,
                         const wxString& name = wxFontPickerWidgetNameStr ) {
      Create( parent, id, initial, pos, size, style, validator, name );
    }

    virtual ~wxGenericFontButton() {}


  public:     // API extensions specific for wxGenericFontButton

    // user can override this to init font data in a different way
    virtual void InitFontData();

    // returns the font data shown in wxColourDialog
    wxFontData *GetFontData() { return &ms_data; }


  public:

    bool Create( wxWindow *parent,
                 wxWindowID id,
                 const wxFont &initial = *wxNORMAL_FONT,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
                 long style = wxFONTBTN_DEFAULT_STYLE,
                 const wxValidator& validator = wxDefaultValidator,
                 const wxString& name = wxFontPickerWidgetNameStr );

    void OnButtonClick( wxCommandEvent & );


  protected:

    void UpdateFont();

    // the colour data shown in wxColourPickerCtrlGeneric
    // controls. This member is static so that all colour pickers
    // in the program share the same set of custom colours.
    static wxFontData ms_data;

  private:
    DECLARE_DYNAMIC_CLASS( wxGenericFontButton )
};


#endif // _WX_FONTPICKER_H_
